﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using log4net;
using GS1.Entidad;
using GS1.DataAccess;
using System.Data;

namespace GS1.Datos
{
    /// <summary>
    /// Clase       : MovimientoEtiquetaDA
    /// Descripcion : Contiene la datos de MovimientoEtiqueta
    /// Autor       : Pedro Miguel Vera Rafael
    /// Fecha       : 25/01/2013
    /// Empresa     : GS1 Peru
    /// </summary>
    public class MovimientoEtiquetaDA
    {
        #region --- Variables y Constantes ---
        private static readonly ILog log = LogManager.GetLogger(typeof(MovimientoEtiquetaDA));

        // Nombre procedimiento almacenado
        private const string PROCEDIMIENTO_RFID_PROCESARMOVSERVICIO = "RFID.SERVIR_sp_ProcesarMovServicio";

        // Parametros Entrada
        private const string PARAM_COD_EPC = "P_COD_EPC";
        private const string PARAM_COD_SEDE = "P_COD_SEDE";
        private const string PARAM_COD_MOTIVO = "P_COD_MOTIVO";
        private const string PARAM_ALERTAR_RESPONSABLES = "P_ALERTAR_RESPONSABLES";

        // Parametros Salida
        #endregion

        #region --- Metodos Propios ---
        public int procesarMovimiento(MovimientoEtiqueta movimientoEtiqueta)
        {
            int alertarReponsables = 0;
            DataSet dsMovimientoEtiqueta = new DataSet();

            //if (log.IsDebugEnabled)
            //{
            //    log.Debug("procesarMovimiento()");
            //}

            using (Database db = new Database(ConstantesDAO.NombreInterface.ConexServir))
            {
                db.NombreProcedimiento = PROCEDIMIENTO_RFID_PROCESARMOVSERVICIO;
                db.agregarParametro(PARAM_COD_EPC, DbType.String, ParameterDirection.Input, movimientoEtiqueta.etiqueta.epc);
                db.agregarParametro(PARAM_COD_SEDE, DbType.Int32, ParameterDirection.Input, movimientoEtiqueta.sede.codigo);
                db.agregarParametro(PARAM_COD_MOTIVO, DbType.Int32, ParameterDirection.Input, movimientoEtiqueta.motivo.codigo);
                db.agregarParametro(PARAM_ALERTAR_RESPONSABLES, DbType.Int32, ParameterDirection.Output, 0);

                db.ejecutar();

                object resultado = db.obtenerParametro(PARAM_ALERTAR_RESPONSABLES).Value;
                alertarReponsables = Convert.ToInt32(resultado == null ? 0 : resultado);
            }

            if (log.IsDebugEnabled)
            {
                log.Debug("procesarMovimiento-resultado(" + alertarReponsables.ToString() + ")");
            }

            return alertarReponsables;
        }
        #endregion
    }
}